#pragma once

#include <cftc/reflect/object.h>
#include <cftf/meta/table.h>

namespace mt
{

#if 0
	class Creature : public cftc::reflect::Object, public cftf::meta::Table<Creature, unsigned int>
	{
		CFT_DECLARE_REFLECT_CLASS();
    public:
        static const int MAX_KILL_CREDIT = 2;
        static const int MAX_CREATURE_MODEL = 4;
        static const int USE_DEFAULT_DATABASE_LEVEL = 4;

	public:
        unsigned int  Entry = 0;
        std::string Name;
        std::string SubName;
        unsigned int  MinLevel = 0;
        unsigned int  MaxLevel = 0;
        std::vector<unsigned int>  ModelId;
        unsigned int  FactionAlliance = 0;
        unsigned int  FactionHorde = 0;
        float   Scale = 0;
        unsigned int  Family = 0;                                         // enum CreatureFamily values (optional)
        unsigned int  CreatureType = 0;                                   // enum CreatureType values
        unsigned int  InhabitType = 0;
        unsigned int  RegenerateStats = 0;
        bool    RacialLeader = 0;
        unsigned int  NpcFlags = 0;
        unsigned int  UnitFlags = 0;                                      // enum UnitFlags mask values
        unsigned int  DynamicFlags = 0;
        unsigned int  ExtraFlags = 0;
        unsigned int  CreatureTypeFlags = 0;                              // enum CreatureTypeFlags mask values
        float   SpeedWalk = 0;
        float   SpeedRun = 0;
        unsigned int  UnitClass = 0;                                      // enum Classes. Note only 4 classes are known for creatures.
        unsigned int  Rank = 0;
        float   HealthMultiplier = 0;
        float   PowerMultiplier = 0;
        float   DamageMultiplier = 0;
        float   DamageVariance = 0;
        float   ArmorMultiplier = 0;
        float   ExperienceMultiplier = 0;
        unsigned int  MinLevelHealth = 0;
        unsigned int  MaxLevelHealth = 0;
        unsigned int  MinLevelMana = 0;
        unsigned int  MaxLevelMana = 0;
        float   MinMeleeDmg = 0;
        float   MaxMeleeDmg = 0;
        float   MinRangedDmg = 0;
        float   MaxRangedDmg = 0;
        unsigned int  Armor = 0;
        unsigned int  MeleeAttackPower = 0;
        unsigned int  RangedAttackPower = 0;
        unsigned int  MeleeBaseAttackTime = 0;
        unsigned int  RangedBaseAttackTime = 0;
        unsigned int  DamageSchool = 0;
        unsigned int  MinLootGold = 0;
        unsigned int  MaxLootGold = 0;
        unsigned int  LootId = 0;
        unsigned int  PickpocketLootId = 0;
        unsigned int  SkinningLootId = 0;
        std::vector<unsigned int>  KillCredit;
        unsigned int  MechanicImmuneMask = 0;
        unsigned int  SchoolImmuneMask = 0;
        int   ResistanceHoly = 0;
        int   ResistanceFire = 0;
        int   ResistanceNature = 0;
        int   ResistanceFrost = 0;
        int   ResistanceShadow = 0;
        int   ResistanceArcane = 0;
        unsigned int  SpellListId = 0;
        unsigned int  PetSpellDataId = 0;
        unsigned int  MovementType = 0;
        unsigned int  TrainerType = 0;
        unsigned int  TrainerSpell = 0;
        unsigned int  TrainerClass = 0;
        unsigned int  TrainerRace = 0;
        unsigned int  TrainerTemplateId = 0;
        unsigned int  VendorTemplateId = 0;
        unsigned int  GossipMenuId = 0;
        unsigned int  EquipmentTemplateId = 0;
        unsigned int  civilian = 0;
        std::string AIName;
	};
#endif

}
